var task_example_data;
var tree_example;

// 为给定 ID 的 user 创建请求
// axios.get('/index.php/tasktree/getallchild/81')
//   .then(function (response) {
//     console.log(response);
//     task_example_data = response.data.data;
//     console.log(task_example_data);
//     tree_example = list_to_tree(task_example_data);
//     console.log(tree_example)
//   })
//   .catch(function (error) {
//     console.log(error);
//   });

// 上面的请求也可以这样做
// axios.get("/index.php/tasktree/getallchild/", {
//     params: {
//       ID: 13
//     }
//   })
//   .then(function (response) {
//     console.log(response);
//   })
//   .catch(function (error) {
//     console.log(error);
//   });



function list_to_tree(obj_array) {

  list = {};
  // list = new Array();
  // 如用数组作临时存储结构，因为id不连续，往往又很大，出现很多空下标。如指定了list[2]，那么就有list[0]=null、list[1]=null，不够优雅
  
  var tree_obj = {
    title: '根目录',
    children: []
  };


  obj_array.forEach(function (item) {
    list[item.id] = item;
    list[item.id].children = new Array();
  });
  // console.log(list);
  obj_array.forEach(function (item) {
    // console.log(item);

    if (item.parent) {
      // console.log(list[item.parent]);
      // console.log(list[item.id]);
      
      if (list[item.parent]) {
        // 将该对象挂装到父对象的children下，实际上在父对象的children下增加了一引用
        list[item.parent].children.push(list[item.id]);

        // let parent = map[item.pid];
        // if(parent) {
        //     (parent.children || (parent.children = [])).push(item);
        // } 网络上一种更为优雅的写法，若不存在childre，则创建children，并压入

      } else {
        // 如果不存在该父对象，则其为顶层节点，将其压入到要返回到的tree_obj中
        tree_obj.children.push(item);
      }
      // console.log(list[item.parent]);
      // console.log("-");

    }
  });
  // console.log(list);
  return tree_obj;
}


// console.log(list[231]);
// console.log(tree_root);


// 差不多的写法
  // const list2Tree = (list: any[], { id = 'id', pid = 'parent', isLeaf = 'isLeaf' }) => {
  //   const treeList: any[] = [];
  //   const dataMap = {};
  //   if (list && list.length > 0) {
  //     list.forEach((item) => {
  //       dataMap[item[id]] = item;
  //     });
  //     list.forEach((item) => {
  //       const parent = dataMap[item[pid]];
  //       if (item[isLeaf]) {
  //         const pItem = item;
  //         pItem.children = [];
  //       }
  //       if (!parent) {
  //         treeList.push(item);
  //         return;
  //       }
  //       if (!parent.children) {
  //         parent.children = [];
  //       }

  //       parent.children.push(item);
  //     });
  //   }

  //   return treeList;
  // };
